1. Field of the Invention
The present invention relates to integrated circuits having digital processors, and, in particular, to the use of registers in the processor core of a digital processor.
2. Description of the Related Art
Conventional digital processors, such as digital signal processors and general-purpose microprocessors, are typically designed with a number of registers in the processor core that can be used by the programmer or compiler as needed. For example, some conventional registers may be dedicated to storing only data values; others may be dedicated to storing pointer values pointing to locations in memory outside of the processor core (i.e., "external memory") where data values may be stored; and still others may be capable of storing either data values or external-memory pointer values, as selected by the programmer. Thus, in these examples, the values stored in conventional registers are either data values or pointer values.
The term "external memory" may be used to refer to either on-chip memory or off-chip memory, but always to memory that is outside of the processor core. As used in this specification, the term "register" refers to hardware (e.g., a set of flip-flops or memory cells) in the processor core of a digital processor, where that hardware can store a value that can be read by an instruction that specifies a label identifying the location of the register (i.e., the register address). The processor core consists of the data path (functional units), register file, and associated control logic required to execute the instruction set defined for the processor. All memory used for storing programs and data are considered to be exterior to the processor core. All peripherals and clock sources are also external to the processor core.
FIG. 1 shows how addressing is implemented for a conventional register. The digital processor corresponding to FIG. 1 has a register file 102 consisting of 32 registers (labeled R0 through R31), each of which can hold a 32-bit value. Each register in the register file has a unique 5-bit register address that distinguishes it from the other 31 registers. For example, the 5-bit register address (00000) corresponding to the number 0 may be used to identify register R0, while the 5-bit register address (00001) corresponding to the number 1 may be used to identify register R1, and so on. A particular register is read by an instruction having a field that identifies the appropriate 5-bit register address via line 104. During a read operation, the register file's address decoding circuitry (not shown) enables the contents of the register (i.e., the value stored in the register) indicated by the register address to appear on line 106 as the read data from the register file (i.e., da[31:0]). In subsequent processing external to FIG. 1, the read value may be treated as a data value or as a pointer value. Similarly, during a write operation, the register file's address decoding circuitry enables the write data on line 108 (i.e., dw[31:0]) to be written into the register indicated by the register address.
Such conventional registers allow programmers to implement many different types of instructions. There are, however, certain types of processing, including certain types of repetitive operations, for which using conventional registers is inefficient.